1

Introduction aux agents de résolution de problèmes

PolyU COMP5511Lecture 2
00:00

Du réflexe à la planification

Dans l'évolution de la conception des agents, nous passons des agents réflexes, qui associent directement les percepts à des actions selon des règles simples (par ex. « Si la voiture devant freine, freiner »), aux agents de résolution de problèmes. Les agents réflexes opèrent sur le contexte immédiat, tandis que les agents de résolution de problèmes sont orientés but. Ils considèrent les conséquences futures de leurs actions pour trouver une séquence qui satisfait un objectif précis.

  • Agent réflexe : $Action = Function(Percept)$
  • Agent planificateur : $Action\_Sequence = Search(State, Goal)$

La représentation atomique de l'état

À ce niveau fondamental, les agents utilisent une représentation atomique. Cela signifie que l'état du monde est traité comme une boîte noire — un nœud unique dont aucune structure interne n'est visible par l'algorithme de recherche. L'agent ne raisonne que sur :

  • États ($S$) : Instantanés de l'environnement.
  • Actions ($A$) : Transitions entre les états.
  • Test de but : Une vérification booléenne si l'état $s \in S_{goal}$.

La boucle de résolution de problèmes

Un agent de résolution de problèmes suit un cycle distinct en quatre étapes pour naviguer dans l'environnement :

  1. Formulation du but : Décider quel objectif poursuivre en fonction de la situation actuelle.
  2. Formulation du problème : Abstraire le monde réel en un modèle mathématique (états et actions).
  3. Recherche : Simuler des séquences d'actions pour trouver le chemin optimal.
  4. Exécution : Exécuter les actions trouvées lors de la phase de recherche sans délibération supplémentaire (en supposant un environnement statique).
Implémentation Python (agent_types.py)
1
class ReflexAgent:
2
defact(self, percept):
3
# Direct mapping: Rule -> Action
4
return rules.get(percept, default_action)
5
6
class ProblemSolvingAgent:
7
def__init__(self):
8
self.seq = [] # Buffered action sequence
9
10
defact(self, percept):
11
# If we are mid-execution, continue
12
ifself.seq:
13
returnself.seq.pop(0)
14
15
# Otherwise, Plan (Search)
16
state = self.update_state(percept)
17
goal = self.formulate_goal(state)
18
problem = self.formulate_problem(state, goal)
19
20
# Search returns a list of actions
21
self.seq = search_algorithm(problem)
22
23
returnself.seq.pop(0)